昨天練了非同步,今天換個主題:模組化 和 NPM 套件。
寫程式到現在,檔案慢慢變多,如果全部都塞在同一支 .js 檔案裡,會變得超亂。
所以需要學會「拆檔案」和「模組化」,再加上 NPM,可以用到別人寫好的套件,讓自己不用重造輪子。
在瀏覽器或 Node.js 都能用 ES6 的模組系統:
// 宣告一個函式
export function average(arr) {
let sum = arr.reduce((acc, n) => acc + n, 0);
return arr.length > 0 ? sum / arr.length : 0;
}
// 匯入函式
import { average } from "./utils.js";
let scores = [80, 90, 100];
console.log("平均分數:", average(scores)); // 90
這樣就能把工具函式拆出來,讓主程式更乾淨。
在 Node.js(特別是舊專案)常常會看到另一套寫法:
function average(arr) {
let sum = arr.reduce((acc, n) => acc + n, 0);
return arr.length > 0 ? sum / arr.length : 0;
}
module.exports = { average };
const { average } = require("./utils");
let scores = [70, 85, 95];
console.log("平均分數:", average(scores)); // 83.33...
這是 CommonJS
語法,現在新專案建議還是用 ES Module
,但知道兩種都很重要。
NPM(Node Package Manager)
就像程式的「應用商店」。
安裝一個套件只要:
npm init -y # 建立 package.json
npm install lodash
安裝好後就可以使用:
import _ from "lodash";
let numbers = [1, 2, 2, 3, 4, 4, 5];
let unique = _.uniq(numbers);
console.log("原始陣列:", numbers);
console.log("去除重複:", unique);
輸出:
原始陣列: [1, 2, 2, 3, 4, 4, 5]
去除重複: [1, 2, 3, 4, 5]
除了 lodash
,常見的還有 axios
(發 API 用)、express
(建 API 伺服器),這些之後都會用到。
今天我把任務拆成兩個檔案:
export function average(arr) {
let sum = arr.reduce((acc, n) => acc + n, 0);
return arr.length > 0 ? sum / arr.length : 0;
}
index.js
import { average } from "./utils.js";
import _ from "lodash";
let scores = [80, 80, 90, 100, 100];
console.log("平均分數:", average(scores)); // 90
console.log("去除重複後:", _.uniq(scores)); // [80, 90, 100]
今天最大的收穫就是:程式不需要全部塞在同一個檔案。
把工具函式抽到 utils.js
,在 index.js
引入,用起來清爽很多。
再加上 NPM
,可以直接用到別人寫好的工具,例如 lodash
的 uniq()
幫我處理重複值,自己就不用寫一堆迴圈。
這讓我感覺:
模組化
:像把房間整理成不同抽屜。NPM
:就像去 IKEA 買現成的收納盒,不用自己手作。明天就要來動手做一個小作品:
讀取 JSON → 篩選 → 輸出。
感覺會是這一週的「小考驗」。💪